Distributed computing systems are typically implemented in data centers located in multiple locations, each of which may provide one or more of computational resources, networking resources, and storage resources. Distributed computing systems continuously execute applications that are written using primitives or operations provided by the framework. The execution happens in a sequence of parallel operations across the distributed computing system.
The amount of resources that is allotted to run an application for a company in a distributed computing system can vary depending on how much the company purchases. At some point, the company may need to expand (or decrease) the amount of resources dedicated for the application. For example, the application may need more resources to run more efficiently. In this case, the actual hardware for the distributed computing system is provisioned and allocated to the application. The company then executes the application on the newly allocated resources in the distributed computing system. It is possible that the newly allocated resources may not exactly operate as the company expected. For example, the performance gain from the newly allocated resources may either be not as good or better than expected. In the not as good case, the company may need more resources, and in the better than expected, the company may be paying for too many resources. Either case is not an optimal use of capital for the company.